+2007-10-09 Kristian Rietveld <kris@imendio.com>
+
+ * gtk/gtktreeview.c (gtk_tree_view_move_cursor_up_down): we should
+ only "don't move the cursor, but just select the current node" if the
+ cursor node is actually selectable. (Fixes #483730, reported by
+ Geoff Bache).
+
2007-10-08 Richard Hult <richard@imendio.com>
* gdk/quartz/gdkwindow-quartz.c: (gdk_window_focus): Implement,
GtkRBNode *new_cursor_node = NULL;
GtkTreePath *cursor_path = NULL;
gboolean grab_focus = TRUE;
+ gboolean selectable;
if (! GTK_WIDGET_HAS_FOCUS (tree_view))
return;
cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
_gtk_tree_view_find_node (tree_view, cursor_path,
&cursor_tree, &cursor_node);
- gtk_tree_path_free (cursor_path);
if (cursor_tree == NULL)
/* FIXME: we lost the cursor; should we get the first? */
return;
selection_count = gtk_tree_selection_count_selected_rows (tree_view->priv->selection);
+ selectable = _gtk_tree_selection_row_is_selectable (tree_view->priv->selection,
+ cursor_node,
+ cursor_path);
if (selection_count == 0
&& tree_view->priv->selection->type != GTK_SELECTION_NONE
- && !tree_view->priv->ctrl_pressed)
+ && !tree_view->priv->ctrl_pressed
+ && selectable)
{
/* Don't move the cursor, but just select the current node */
new_cursor_tree = cursor_tree;
&new_cursor_tree, &new_cursor_node);
}
+ gtk_tree_path_free (cursor_path);
+
if (new_cursor_node)
{
cursor_path = _gtk_tree_view_find_path (tree_view,